 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
    <title>注册页面</title>  
      
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    <meta http-equiv="description" content="This is my page">   
    <script type="text/javascript" src="<c:url value='/jquery/jquery-1.11.3.js'/>"></script>   
  </head>  
   <script type="text/javascript">
    $(function() {   
    $(".errorClass").each(function() {  
        showError($(this));//遍历每个元素，使用每个元素来调用showError方法  
    });  
      
    /*  
     * 3. 输入框得到焦点隐藏错误信息  
     */  
    $(".inputClass").focus(function() {  
        var labelId = $(this).attr("id") + "Error";//通过输入框找到对应的label的id  
        $("#" + labelId).text("");//把label的内容清空！  
        showError($("#" + labelId));//隐藏没有信息的label  
    });  
      
    /*  
     * 4. 输入框失去焦点进行校验  
     */  
    $(".inputClass").blur(function() {  
        var id = $(this).attr("id");//获取当前输入框的id  
        var funName = "validate" + id.substring(0,1).toUpperCase() + id.substring(1) + "()";//得到对应的校验函数名  
        eval(funName);//执行函数调用  
    });  
      
    /*  
     * 5. 表单提交时进行校验  
     */  
    $("#registForm").submit(function() {  
        var bool = true;//表示校验通过  
        if(!validateLoginname()) {  
            bool = false;  
        }  
        if(!validateLoginpass()) {  
            bool = false;  
        }  
        if(!validateReloginpass()) {  
            bool = false;  
        }   
        return bool;  
    });  
});  
  
/*  
 * 登录名校验方法  
 */  
function validateLoginname() {  
    var id = "loginname";  
    var value = $("#" + id).val();//获取输入框内容  
    /*  
     * 1. 非空校验  
     */  
    if(!value) {   
        $("#" + id + "Error").text("用户名不能为空！");  
        showError($("#" + id + "Error"));  
        return false;  
    }  
    /*  
     * 2. 长度校验  
     */  
    if(value.length < 3 || value.length > 20) {  
        /*  
         * 获取对应的label  
         * 添加错误信息  
         * 显示label  
         */  
        $("#" + id + "Error").text("用户名长度必须在3 ~ 20之间！");  
        showError($("#" + id + "Error"));  
        false;  
    }  
    /*  
     * 3. 是否注册校验  
     */  
    $.ajax({  
        url:"/goods/UserServlet",//要请求的servlet  
        data:{method:"ajaxValidateLoginname", loginname:value},//给服务器的参数  
        type:"POST",  
        dataType:"json",  
        async:false,//是否异步请求，如果是异步，那么不会等服务器返回，我们这个函数就向下运行了。  
        cache:false,  
        success:function(result) {  
            if(!result) {//如果校验失败  
                $("#" + id + "Error").text("用户名已被注册！");  
                showError($("#" + id + "Error"));  
                return false;  
            }  
        }  
    });  
    return true;  
}  
  
/*  
 * 登录密码校验方法  
 */  
function validateLoginpass() {  
    var id = "loginpass";  
    var value = $("#" + id).val();//获取输入框内容  
    /*  
     * 1. 非空校验  
     */  
    if(!value) {  
        /*  
         * 获取对应的label  
         * 添加错误信息  
         * 显示label  
         */  
        $("#" + id + "Error").text("密码不能为空！");  
        showError($("#" + id + "Error"));  
        return false;  
    }  
    /*  
     * 2. 长度校验  
     */  
    if(value.length < 3 || value.length > 20) {  
        /*  
         * 获取对应的label  
         * 添加错误信息  
         * 显示label  
         */  
        $("#" + id + "Error").text("密码长度必须在3 ~ 20之间！");  
        showError($("#" + id + "Error"));  
        false;  
    }  
    return true;      
}  
  
/*  
 * 确认密码校验方法  
 */  
function validateReloginpass() {  
    var id = "reloginpass";  
    var value = $("#" + id).val();//获取输入框内容  
    /*  
     * 1. 非空校验  
     */  
    if(!value) {  
        /*  
         * 获取对应的label  
         * 添加错误信息  
         * 显示label  
         */  
        $("#" + id + "Error").text("确认密码不能为空！");  
        showError($("#" + id + "Error"));  
        return false;  
    }  
    /*  
     * 2. 两次输入是否一致校验  
     */  
    if(value != $("#loginpass").val()) {  
        /*  
         * 获取对应的label  
         * 添加错误信息  
         * 显示label  
         */  
        $("#" + id + "Error").text("两次输入不一致！");  
        showError($("#" + id + "Error"));  
        false;  
    }  
    return true;      
}  
  
/*  
 * 判断当前元素是否存在内容，如果存在显示，不页面不显示！  
 */  
function showError(ele) {  
    var text = ele.text();//获取元素的内容  
    if(!text) {//如果没有内容  
        ele.css("display", "none");//隐藏元素  
    } else {//如果有内容  
        ele.css("display", "");//显示元素  
    }  
}  
   </script>
   
  <body>  
<div id="divMain">  
  <div id="divTitle">  
    <span id="spanTitle">新用户注册</span>  
  </div>  
  <div id="divBody">  
<form action="<c:url value='/UserServlet'/>" method="post" id="registForm">  
    <input type="hidden" name="method" value="regist"/>    
    <table id="tableForm">  
      <tr>  
        <td class="tdText">用户名：</td>  
        <td class="tdInput">  
          <input class="inputClass" type="text" name="loginname" id="loginname" value="${form.loginname }"/>  
        </td>  
        <td class="tdError">  
          <label class="errorClass" id="loginnameError">${errors.loginname }</label>  
        </td>  
      </tr>  
      <tr>  
        <td class="tdText">登录密码：</td>  
        <td>  
          <input class="inputClass" type="password" name="loginpass" id="loginpass" value="${form.loginpass }"/>  
        </td>  
        <td>  
          <label class="errorClass" id="loginpassError">${errors.loginpass }</label>  
        </td>  
      </tr>  
      <tr>  
        <td class="tdText">确认密码：</td>  
        <td>  
          <input class="inputClass" type="password" name="reloginpass" id="reloginpass" value="${form.reloginpass }"/>  
        </td>  
        <td>  
          <label class="errorClass" id="reloginpassError">${errors.reloginpass}</label>  
        </td>  
      </tr>  
    </table>  
</form>      
  </div>  
</div>  
  </body>  
</html> 